package com.itboye.allshengmedical.sci;

import android.R.integer;
import android.os.Handler;

import com.itboye.allshengmedical.sci.cmd.req.CmdType;
import com.itboye.allshengmedical.sci.cmd.req.IReqCommand;

/**
 * 生命周期： init 初始化 start 开启 pause 暂停 release 释放
 * 
 * @author 贝贝 346551990@qq.com
 * @date 2016-12-8
 */
public interface ISerialControl {

	public static final int FindPacketMessage = 30001;// 找到一个数据包消息类型
	public static final int SCTimeoutMessage = 30002;// 找到一个超时消息

	/**
	 * 设置handler
	 * 
	 * @param handler
	 */
	void setHandler(Handler handler);

	/**
	 * 安全性检查，是否可以正常使用，不是的时候，可以调用getLastError来获取错误信息
	 * 
	 * @return
	 */
	Boolean safeCheck();

	/**
	 * 获取最近一次错误信息，基本上是读、写线程发生的错误
	 * 
	 * @return
	 */
	String getLastError();

	/**
	 * 线程正在运行中...
	 * 
	 * @return
	 */
	Boolean isRunning();

	/**
	 * 开启线程监听
	 */
	void start();

	/**
	 * 关闭线程监听
	 */
	void pause();

	/**
	 * 初始化资源
	 */
	void init();

	/**
	 * 关闭线程并释放该有的资源
	 */
	void release();

	/**
	 * 串口是否已经打开了
	 * 
	 * @return
	 */
	Boolean isOpened();

	/**
	 * 发送指令
	 * 
	 * @param cmd
	 */
	void addCommand(IReqCommand cmd);

	/**
	 * 发送指令
	 * 
	 * @param cmd
	 */
	void addCommand(CmdType type, String todo, int temp);

	void addCommand(CmdType type, String todo, int temp1, int temp2, int temp3,
			int temp4);

	void sendCmd(byte[] data);
}
